package com.jdy.haoduoaiteacher.view.timesquare;//// Copyright 2012 Square, Inc.
//package com.jdy.haoduoaiteacher.view.timesquare;
//
//import static android.view.View.MeasureSpec.AT_MOST;
//import static android.view.View.MeasureSpec.EXACTLY;
//import static android.view.View.MeasureSpec.makeMeasureSpec;
//import android.content.Context;
//import android.graphics.Canvas;
//import android.graphics.Paint;
//import android.util.AttributeSet;
//import android.view.View;
//import android.view.ViewGroup;
//
//import com.jdy.haoduoaiteacher.R;
//import com.jdy.haoduoaiteacher.util.Tools;
//
///**
// * ViewGroup that draws a grid of calendar cells. All children must be
// * {@link CalendarRowView}s. The first row is assumed to be a header and no
// * divider is drawn above it.
// * 
// * @author hf
// * 
// */
//public class CalendarGridView extends ViewGroup {
//  private final Paint dividerPaint = new Paint();
//  private int oldWidthMeasureSize;
//  private int oldNumRows;
//  private int ticketType = 0;
//
//  public CalendarGridView(Context context, AttributeSet attrs) {
//    super(context, attrs);
//    if (isInEditMode()) {
//      return;
//    }
//    // dividerPaint.setColor(getResources().getColor(R.color.calendar_divider));
//    dividerPaint.setColor(getResources().getColor(R.color.calendar_divider));
//  }
//
//  @Override
//  public void addView(View child, int index, ViewGroup.LayoutParams params) {
//    if (getChildCount() == 0) {
//      ((CalendarRowView) child).setIsHeaderRow(true);
//    }
//    super.addView(child, index, params);
//  }
//
//  @Override
//  protected void dispatchDraw(Canvas canvas) {
//    super.dispatchDraw(canvas);
//    final ViewGroup row = (ViewGroup) getChildAt(1);
//    int top = row.getTop();
//    int bottom = getBottom();
//    int margin = 2;
//    // Left side border.
//    final int left = row.getChildAt(0).getLeft() + getLeft() - margin;
//    // canvas.drawLine(left, top, left, bottom, dividerPaint);
//
//    // Each cell's right-side border.
//
//    for (int c = 0; c < 7; c++) {
//      int x = left + row.getChildAt(c).getRight() - 1;
//      canvas.drawLine(x, top, x, bottom, dividerPaint);
//    }
//
//    // right side border.
//    // int x = left + row.getChildAt(1).getRight() + margin;
//    // canvas.drawLine(x, top, x, bottom, dividerPaint);
//    // int x = left + row.getChildAt(2).getRight() + margin;
//    // canvas.drawLine(x, top, x, bottom, dividerPaint);
//  }
//
//  @Override
//  protected boolean drawChild(Canvas canvas, View child, long drawingTime) {
//    final boolean retVal = super.drawChild(canvas, child, drawingTime);
//    // Draw a bottom border.
//    // final int bottom = child.getBottom() - 1;
//    // if(child.equals(getLastRow())) {
//    // canvas.drawLine(child.getLeft(), bottom, child.getRight(), bottom,
//    // dividerPaint);
//    // }
//
//    final int bottom = child.getBottom() - 1;
//    canvas.drawLine(child.getLeft(), bottom, child.getRight(), bottom,
//        dividerPaint);
//
//    return retVal;
//  }
//
//  // private View getLastRow() {
//  // int i = 0;
//  // for (; i < getChildCount(); i++) {
//  // if (getChildAt(i).getVisibility() == View.GONE)
//  // break;
//  // }
//  // i = i > 1 ? i : 1;
//  // return getChildAt(i - 1);
//  // }
//
//  @Override
//  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//    // Logr.d("Grid.onMeasure w=%s h=%s",
//    // MeasureSpec.toString(widthMeasureSpec),
//    // MeasureSpec.toString(heightMeasureSpec));
//    int widthMeasureSize = MeasureSpec.getSize(widthMeasureSpec);
//    if (oldWidthMeasureSize == widthMeasureSize) {
//      // Logr.d("SKIP Grid.onMeasure");
//      setMeasuredDimension(getMeasuredWidth(), getMeasuredHeight());
//      return;
//    }
//    oldWidthMeasureSize = widthMeasureSize;
//    int cellSize = widthMeasureSize / 7;
//    // Remove any extra pixels since /7 is unlikely to give whole nums.
//    // widthMeasureSize = cellSize * 7;
//    int totalHeight = 0;
//    final int rowWidthSpec = makeMeasureSpec(widthMeasureSize, EXACTLY);
//    final int rowHeightSpec = makeMeasureSpec(cellSize, EXACTLY);
//    for (int c = 0, numChildren = getChildCount(); c < numChildren; c++) {
//      final View child = getChildAt(c);
//      if (child.getVisibility() == View.VISIBLE) {
//        if (c == 0) { // It's the header: height should be wrap_content.
//          measureChild(child, rowWidthSpec, makeMeasureSpec(cellSize, AT_MOST));
//        } else {
//          measureChild(child, rowWidthSpec, rowHeightSpec);
//        }
//        totalHeight += child.getMeasuredHeight();
//      }
//    }
//    final int measuredWidth = widthMeasureSize; // Fudge factor to make the
//                                                // borders show up.
//    int margin = Tools.getPixelByDip(getContext(), 2);
//    setMeasuredDimension(measuredWidth, totalHeight + margin);
//  }
//
//  @Override
//  protected void onLayout(boolean changed, int left, int top, int right,
//      int bottom) {
//    // long start = System.currentTimeMillis();
//    top = 0;
//    for (int c = 0, numChildren = getChildCount(); c < numChildren; c++) {
//      final View child = getChildAt(c);
//      final int rowHeight = child.getMeasuredHeight();
//      child.layout(left, top, right, top + rowHeight);
//      top += rowHeight;
//    }
//    // Logr.d("Grid.onLayout %d ms", System.currentTimeMillis() - start);
//  }
//
//  public void setNumRows(int numRows) {
//    if (oldNumRows != numRows) {
//      // If the number of rows changes, make sure we do a re-measure next time
//      // around.
//      oldWidthMeasureSize = 0;
//    }
//    oldNumRows = numRows;
//  }
//
//  public int getTicketType() {
//    return ticketType;
//  }
//
//  public void setTicketType(int ticketType) {
//    this.ticketType = ticketType;
//  }
// }
